package org.example.campusforum.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 用户信息更新请求数据传输对象
 *
 * 用于接收用户更新个人信息的请求参数，支持部分字段更新。
 * 只有非空字段会被更新，空字段将保持原有值不变。
 * 用户ID从JWT令牌中自动获取，无需在此DTO中传递。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserUpdate {

    /**
     * 用户昵称
     * 用户在论坛中显示的名称，可选更新字段
     */
    private String nickname;

    /**
     * 用户头像URL
     * 用户头像图片的链接地址，可选更新字段
     */
    private String avatar;

    /**
     * 用户性别
     * 0: 男性
     * 1: 女性
     * 可选更新字段，可为空
     */
    private Integer sex;

    /**
     * 用户年龄
     * 用户的年龄信息，可选更新字段
     */
    private Integer age;

    /**
     * 用户个性签名
     * 用户自定义的个性签名，可选更新字段
     */
    private String signature;
}